#静态方法 节约性能使用
#使用@staticmethod 修饰的方法(@即为语法糖) 没有self和cls参数的限制
#静态方法与类无关,可以转换成函数使用
#左右减少不必要的参数传递 提高效率,减少内存占用 当方法内的self,和类名都没使用时,可以定义
class Animal(object):
    @staticmethod
    def show():
        print("我是动物")
a1 = Animal()
a1.show()
#类方法
#使用@classmethod 第一个参数必须为类对象 一般以cls作为第一个参数 cls代表类对象本身
#当方法中需要使用到类对象时(如私有属性) ,一般配合类属性使用
class Cat(object):
    @classmethod
    def show(cls):
        print("我是动物")
c1 = Cat()
c1.show()
#总结静态和类方法都无法访问实例属性
#实例方法(可以访问类和实例属性) > 类方法(可以访问类属性) >静态方法(什么都不访问(虽然可以通过类名访问类属性,不过没意义))
#我的理解,节省内存,如果方法都需要调用就用实例方法(基础方法),如果只用到类属性就用类方法,如果都不使用就用静态方法